#include <stdio.h>
#include <stdlib.h>  

#define HARMONY_OS "hello harmonyos \n"
const int g_const = 10;	//全局常量区
int g_init = 57;	//全局变量
int g_no_init;		//全局变量无初值
static int s_exter_init = 58;//静态外部变量有初值
static int s_exter_no_init;	 //静态外部变量无初值
/**************************************************
* main:通过简单案例窥视编译过程和内存布局
**************************************************/
int main()
{
	static int s_inter_init = 59;//静态内部变量有初值
	static int s_inter_no_init;	 //静态内部变量无初值
	
	int l_init = 60;			 //局部变量有初值
	int l_no_init;				 //局部变量无初值
	const int l_const = 11;		 //局部常量
	
	char *heap = (char *)malloc(100);//堆区
	
	printf(HARMONY_OS);
	//----------------------
	printf("全局常量 g_const：%p\n", &g_const);
	printf("全局外部有初值 g_init：%p\n", &g_init);
	printf("全局外部无初值 g_no_init：%p\n", &g_no_init);
	printf("静态外部有初值 s_exter_init：%p\n", &s_exter_init);
	printf("静态外静无初值 s_exter_no_init：%p\n", &s_exter_no_init);
	printf("静态内部有初值 s_inter_init：%p\n", &s_inter_init);
	printf("静态内部无初值 s_inter_no_init：%p\n", &s_inter_no_init);
	//----------------------
	printf("局部栈区有初值 l_init：%p\n", &l_init);
	printf("局部栈区无初值  l_no_init：%p\n", &l_no_init);
	printf("局部栈区常量  l_const：%p\n", &l_const);
	//----------------------
	printf("堆区地址 heap：%p\n", heap);
	//----------------------
	printf("代码区地址：%p\n", &main);
	return 0;
}
/* 执行结果
root@5e3abe332c5a:/home/docker/test4harmony/57# gcc main.c -o weharmony -static
root@5e3abe332c5a:/home/docker/test4harmony/57# ./weharmony
hello harmonyos 
全局常量 g_const：0x495008
全局外部有初值 g_init：0x4c00f0
全局外部无初值 g_no_init：0x4c3320
静态外部有初值 s_exter_init：0x4c00f4
静态外静无初值 s_exter_no_init：0x4c2270
静态内部有初值 s_inter_init：0x4c00f8
静态内部无初值 s_inter_no_init：0x4c2274
局部栈区有初值 l_init：0x7ffc2a1ba114
局部栈区无初值  l_no_init：0x7ffc2a1ba118
局部栈区常量  l_const：0x7ffc2a1ba11c
堆区地址 heap：0x1f5bb80
代码区地址：0x401d35
*/